package com.efast.dmom.mgmt.service.mes.impl;
import java.util.ArrayList;
import java.util.List;

import com.efast.dmom.mgmt.dao.mes.TrBasProductCfgDciDao;
import com.efast.dmom.mgmt.dao.mes.TwBasLotDataCollectionDao;
import com.efast.dmom.mgmt.entity.mes.TrBasProductCfgDci;
import com.efast.dmom.mgmt.entity.mes.TwBasLotDataCollection;
import com.efast.dmom.mgmt.service.mes.TrBasProductCfgDciService;
import com.efast.dmom.mgmt.utils.Assist;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TrBasProductCfgDciServiceImpl implements TrBasProductCfgDciService{
    @Autowired
    private TrBasProductCfgDciDao trBasProductCfgDciDao;
    @Autowired
    private TwBasLotDataCollectionDao twBasLotDataCollectionDao;
    
    @Override
    public long getTrBasProductCfgDciRowCount(Assist assist){
        return trBasProductCfgDciDao.getTrBasProductCfgDciRowCount(assist);
    }
    @Override
    public List<TrBasProductCfgDci> selectTrBasProductCfgDci(Assist assist){
        return trBasProductCfgDciDao.selectTrBasProductCfgDci(assist);
    }
    @Override
    public TrBasProductCfgDci selectTrBasProductCfgDciByObj(TrBasProductCfgDci obj){
        return trBasProductCfgDciDao.selectTrBasProductCfgDciByObj(obj);
    }
    @Override
    public TrBasProductCfgDci selectTrBasProductCfgDciById(Integer id){
        return trBasProductCfgDciDao.selectTrBasProductCfgDciById(id);
    }
    @Override
    public int insertTrBasProductCfgDci(TrBasProductCfgDci value){
        return trBasProductCfgDciDao.insertTrBasProductCfgDci(value);
    }
    @Override
    public int insertNonEmptyTrBasProductCfgDci(TrBasProductCfgDci value){
        return trBasProductCfgDciDao.insertNonEmptyTrBasProductCfgDci(value);
    }
    @Override
    public int insertTrBasProductCfgDciByBatch(List<TrBasProductCfgDci> value){
        return trBasProductCfgDciDao.insertTrBasProductCfgDciByBatch(value);
    }
    @Override
    public int deleteTrBasProductCfgDciById(Integer id){
        return trBasProductCfgDciDao.deleteTrBasProductCfgDciById(id);
    }
    @Override
    public int deleteTrBasProductCfgDci(Assist assist){
        return trBasProductCfgDciDao.deleteTrBasProductCfgDci(assist);
    }
    @Override
    public int updateTrBasProductCfgDciById(TrBasProductCfgDci enti){
        return trBasProductCfgDciDao.updateTrBasProductCfgDciById(enti);
    }
    @Override
    public int updateTrBasProductCfgDci(TrBasProductCfgDci value, Assist assist){
        return trBasProductCfgDciDao.updateTrBasProductCfgDci(value,assist);
    }
    @Override
    public int updateNonEmptyTrBasProductCfgDciById(TrBasProductCfgDci enti){
        return trBasProductCfgDciDao.updateNonEmptyTrBasProductCfgDciById(enti);
    }
    @Override
    public int updateNonEmptyTrBasProductCfgDci(TrBasProductCfgDci value, Assist assist){
        return trBasProductCfgDciDao.updateNonEmptyTrBasProductCfgDci(value,assist);
    }

    public TrBasProductCfgDciDao getTrBasProductCfgDciDao() {
        return this.trBasProductCfgDciDao;
    }

    public void setTrBasProductCfgDciDao(TrBasProductCfgDciDao trBasProductCfgDciDao) {
        this.trBasProductCfgDciDao = trBasProductCfgDciDao;
    }
    
    @Override
	public int updateTrBasProductCfgDciByBatch(List<TrBasProductCfgDci> value) {
		return trBasProductCfgDciDao.updateTrBasProductCfgDciByBatch(value);
	}
    
	@Override
	public List<TrBasProductCfgDci> selectLotProductCfgDci(Integer lotId, Integer productConfigId,Integer operationId) {
		//通过lotId判断产品执行中是否有数据采集信息
		Assist assist = new Assist();
		assist.setRequires(Assist.andEq("lot_id", lotId));
		assist.setRequires(Assist.andEq("operation_id", operationId));
		List<TwBasLotDataCollection> lotDci = twBasLotDataCollectionDao.selectTwBasLotDataCollection(assist);
		List<TrBasProductCfgDci> dci = new ArrayList<TrBasProductCfgDci>();
		if(lotDci!=null&&lotDci.size()>0) {
			dci = trBasProductCfgDciDao.selectLotProductCfgDci(lotId,operationId);
		}else {
			dci = trBasProductCfgDciDao.getProductCfgDci(productConfigId);
		}
		return dci;
	}

}